<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->
<title>VIM 中文帮助: METAFONT 和 MetaPost 文件类型插件</title>
<link rel="stylesheet" href="vim-stylesheet.css" type="text/css" />
<link rel="canonical" href="https://yianwillis.github.io/vimcdoc/doc/ft_mp.html" />
<script type="text/javascript" src="vimcdoc.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<nav id=banner>
<form action=tags.html target="tag_iframe">
  <input type="text" name="tag" id="tag" placeholder="标签搜索">
</form>
<iframe name="tag_iframe" src=""></iframe>
<a href="help.html">帮助总览</a> &middot;
<hr/>
<a href="quickref.html">快速参考</a> &middot;
<a href="index.html">命令索引</a> &middot;
<a href="eval.html#functions">函数列表</a> &middot;
<a href="quickref.html#option-list">选项列表</a> &middot;
<hr/>
<a href="usr_toc.html">用户手册</a> &middot;
<a href="help.html#reference_toc">参考手册</a> &middot;
</nav>

<header>
<h2>ft_mp</h2>
</header>
<article id=outer>
<section class=inner>
<b class="vimtag"> <a name="ft_mp.txt">ft_mp.txt</a> </b>     适用于 Vim 9.0 版本。   最近更新: 2023年2月

这是关于 METAFONT 和 MetaPost 文件类型的插件的文档。除非特别指定，下面定义的命
令、设置和映射对两种文件类型都适用。

<code class="note">注意</code>: 此插件需要 +vim9script。

</section><hr class="doubleline" /><section class=inner>
<h4>内 容                                                   <b class="vimtag"> <a name="mp.vim">mp.vim</a> </b> <b class="vimtag"> <a name="ft-metapost">ft-metapost</a> </b></h4>                                                        <b class="vimtag"> <a name="mf.vim">mf.vim</a> </b> <b class="vimtag"> <a name="ft-metafont">ft-metafont</a> </b>

1. 介绍                                  <a href="ft_mp.html#ft-metapost-intro">ft-metapost-intro</a> 
2. 命令                                  <a href="ft_mp.html#ft-metapost-commands">ft-metapost-commands</a> 
3. 设置                                  <a href="ft_mp.html#ft-metapost-settings">ft-metapost-settings</a> 
4. 映射                                  <a href="ft_mp.html#ft-metapost-mappings">ft-metapost-mappings</a> 

</section><hr class="doubleline" /><section class=inner>
<h4>                                                        <b class="vimtag"> <a name="ft-metapost-intro">ft-metapost-intro</a> </b></h4>                                                        <b class="vimtag"> <a name="ft-metafont-intro">ft-metafont-intro</a> </b>
<code class="section">介绍 </code>
此文件类型提供 METAFONT 和 MetaPost 文档的完整支持，包括语法高亮、缩进和补全。

为 METAFONT 和 MetaPost 代码定义缩进规则需要点技巧，也有些主观，因为它们的语法
是很自由的。此插件使用一些经验法则，应适用于多数情况，但特定情况下可以自行覆盖
自动规则，以使  <code class="badlink">gg=G</code>  这样的命令可以保存手动定义的缩进。

为此，可在一行后加上  <code class="badlink">%&gt;</code> 、 <code class="badlink">%&lt;</code> 、 <code class="badlink">%=</code>  或  <code class="badlink">%!</code> ，以显式地控制其后一行的缩进。
 <code class="badlink">&lt;</code>  和  <code class="badlink">&gt;</code>  符号可重复多次: 例如  <code class="badlink">%&gt;&gt;</code>  会使下行缩进两次。当然， <code class="badlink">%&lt;</code>  会使下行减
少一层缩进；而  <code class="badlink">%=</code>  设置下行的缩进和当前行的相同；而  <code class="badlink">%!</code>  代表下行的缩进手动控
制，不应改变。

例如，下面是简单宏的缺省缩进方式:

<code class="example">   def foo =</code>
<code class="example">       makepen(</code>
<code class="example">           subpath(T-n,t) of r</code>
<code class="example">           shifted .5down</code>
<code class="example">           --subpath(t,T) of r shifted .5up -- cycle</code>
<code class="example">       )</code>
<code class="example">       withcolor black</code>
<code class="example">   enddef</code>

通过加入特殊注释，可随意控制缩进:

<code class="example">   def foo =</code>
<code class="example">       makepen(</code>
<code class="example">           subpath(T-n,t) of r  %&gt;</code>
<code class="example">               shifted .5down   %&gt;</code>
<code class="example">                   --subpath(t,T) of r shifted .5up -- cycle   %&lt;&lt;&lt;</code>
<code class="example">       )</code>
<code class="example">       withcolor black</code>
<code class="example">   enddef</code>

                                                        <b class="vimtag"> <a name="ft-metapost-commands">ft-metapost-commands</a> </b>
<code class="section">命令 </code>
                                        <b class="vimtag"> <a name=":FixBeginfigs">:FixBeginfigs</a> </b>
重新编号当前缓冲区的 beginfig() 块，使第 n 个图的编号为 n。只适用于 MetaPost。

                                                        <b class="vimtag"> <a name="ft-metapost-settings">ft-metapost-settings</a> </b>
                                                        <b class="vimtag"> <a name="ft-metafont-settings">ft-metafont-settings</a> </b>
<code class="section">设置 </code>
                                        <b class="vimtag"> <a name="'g:mf_other_macros'">'g:mf_other_macros'</a> </b>
高亮一些其它的基本宏名，如 cmbase、logo 等等的。METAFONT 缓冲区缺省设为 1，
MetaPost 缓冲区缺省设为 0。

                                        <b class="vimtag"> <a name="'g:mf_plain_macros'">'g:mf_plain_macros'</a> </b>
高亮 plain.mf 定义的关键字。METAFONT 缓冲区缺省设为 1，MetaPost 缓冲区缺省设为
0。

                                        <b class="vimtag"> <a name="'g:mf_plain_modes'">'g:mf_plain_modes'</a> </b>
高亮 modes.mf 定义的关键字。METAFONT 缓冲区缺省设为 1，MetaPost 缓冲区缺省设为
0。

                                        <b class="vimtag"> <a name="'g:mp_close_tag'">'g:mp_close_tag'</a> </b>
定义结束缩进块的额外关键字。例如定义了:

<code class="example">        g:mp_close_tag = ['\&lt;endfoo\&gt;']</code>

那么  <code class="badlink">endfoo</code>  开始的行会比前一行减少一层缩进。

<code class="example">        g:mp_close_tag = []</code>

                                        <b class="vimtag"> <a name="'b:mp_metafun'">'b:mp_metafun'</a> </b>
                                        <b class="vimtag"> <a name="'g:mp_metafun'">'g:mp_metafun'</a> </b>
设为 1 时，高亮 ConTeXt 的 MetaFun 关键字。只适用于 MetaPost。

<code class="example">        g:mp_metafun = 0</code>

                                        <b class="vimtag"> <a name="'g:mp_mfplain_macros'">'g:mp_mfplain_macros'</a> </b>
高亮 mfplain.mp 定义的关键字。只适用于 MetaPost。

<code class="example">        g:mp_mfplain_macros = 1</code>

                                        <b class="vimtag"> <a name="'g:mp_open_tag'">'g:mp_open_tag'</a> </b>
定义开始缩进块的额外关键字。例如定义了:

<code class="example">        g:mp_open_tag = ['\&lt;beginfoo\&gt;']</code>

那么  <code class="badlink">beginfoo</code>  开始的行会被缩进。

<code class="example">        g:mp_open_tag = []</code>

                                        <b class="vimtag"> <a name="'g:mp_other_macros'">'g:mp_other_macros'</a> </b>
高亮所有基本的宏包 (boxes、rboxes、format、graph、marith、sarith、string、TEX)
定义的关键字。此选项只影响 MetaPost 缓冲区。

<code class="example">        g:mp_other_macros = 1</code>

                                        <b class="vimtag"> <a name="'g:mp_plain_macros'">'g:mp_plain_macros'</a> </b>
高亮 plain.mp 定义的关键字。只适用于 MetaPost。

<code class="example">        g:mp_plain_macros = 1</code>

                                        <b class="vimtag"> <a name="'g:no_mp_maps'">'g:no_mp_maps'</a> </b>
                                        <b class="vimtag"> <a name="'g:no_mf_maps'">'g:no_mf_maps'</a> </b>
置位时，在给定文件类型对应的缓冲区里不定义映射。

<code class="example">        g:no_mp_maps = 0</code>
<code class="example">        g:no_mf_maps = 0</code>

                                                        <b class="vimtag"> <a name="ft-metapost-mappings">ft-metapost-mappings</a> </b>
                                                        <b class="vimtag"> <a name="ft-metafont-mappings">ft-metafont-mappings</a> </b>
<code class="section">映射 </code>

]]                      <code class="special">[count]</code> 个正向 vardefs、宏和图。

[[                      <code class="special">[count]</code> 个反向 vardef、宏和图。

][                      <code class="special">[count]</code> 个正向 vardef、宏和图的结尾处。

[]                      <code class="special">[count]</code> 个反向 vardef、宏和图的结尾处。

]}                      <code class="special">[count]</code> 个正向块结尾处 (fi、endfor、endgroup)。

[{                      <code class="special">[count]</code> 个反向块开始处 (if、for、begingroup)。

 vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
</section>
</article>
<footer>
Generated by vim2html
</footer>
</body>
</html>
